/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uy.edu.ort.procesar.negocio;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.security.CodeSource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Properties;
import java.util.logging.Level;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import uy.edu.ort.dominio.ListaTopicos;
import uy.edu.ort.dominio.ManejoJSON;
import uy.edu.ort.servicios.negocio.ManejoArchivos;

/**
 *
 * @author Administrador
 */
@Stateless
public class ProcesarWSSB implements ProcesarWSSBLocal {
    
    static Logger logger = Logger.getLogger(ProcesarWSSB.class);
    //Inyección de dependencia
    @EJB
    private ValidarDatosSBLocal vdLocal;   
    
    @EJB
    private ManejoTopicosSBLocal mtLocal;
    
    @Override
    public String RecibirNoticia(String noticia) {
        
        ManejoArchivos archivo = new ManejoArchivos();
        String retorno = "";
        URL url = ProcesarWSSB.class.getResource("log4j.properties");

        PropertyConfigurator.configure(url);
        if (vdLocal.ValidarNoticia(noticia))
        {
            retorno = "Noticia ACEPTADA: " + noticia;
            archivo.GuardarTextoEnArchivo(noticia + " ACEPTADA");
            //aca tengo que guardar la noticia como ACEPTADA
            logger.info(retorno);
        }
        else
        {
            retorno = "Noticia RECHAZADA: " + noticia;
            archivo.GuardarTextoEnArchivo(noticia + " RECHAZADA");
            //aca tengo que guardar la noticia como RECHAZADA
            logger.error(retorno);
        }
        
        return retorno;
    }

    @Override
    public String ConsultarTopicos(String fuente) {
        String topicos = "";
        URL url = ProcesarWSSB.class.getResource("log4j.properties");
        PropertyConfigurator.configure(url);
        if (vdLocal.ValidarFuente(fuente))
        {
            logger.info("Fuente AUTORIZADA: " + fuente);
            ListaTopicos listTopicos = mtLocal.ObtenerTopicos();
//            //ManejoJSON mj = new ManejoJSON();
//            ManejoJSON mj = null;
//            System.out.println("LLEGAAAAAA SERVIDOR 2");
//            topicos = mj.ObjetoToJSON(listTopicos);
            ObjectMapper mapper = new ObjectMapper();
            try {

                // Generamos la salida a un archivo
                //mapper.writeValue(new File("D:\\jsonServer.txt"), listTopicos);
                // mostramos por consola
                topicos = mapper.writeValueAsString(listTopicos);
                System.out.println(topicos);
             } catch (JsonGenerationException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
             e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
//            Iterator<String> iterador = listTopicos.iterator();  
//  
//            while (iterador.hasNext()) {  
//                String topico = iterador.next();  
//                topicos = topicos + "-" + topico;  
//            }
        }
        else
        {
            logger.error("Fuente NO AUTORIZADA: " + fuente);
            topicos = "Fuente inválida";
        }
        return topicos;
    }

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

}
